<?php

//后台分组普通控制器的父类
namespace Tools;
use Think\Controller;
class AdminController extends Controller{
    //构造方法实现各个方法访问过滤效果
    public function __construct(){
        parent::__construct();//避免覆盖父类方法先执行
//        获取当前用户访问的控制器、操作方法信息
//        echo CONTROLLER_NAME->获取当前访问的控制器;ACTION_NAME->获取当前访问的方法
        $newac = CONTROLLER_NAME."-".ACTION_NAME;
//        获取饭前用户允许访问的权限信息
//        获取管理员id name 信息
        $admin_id = session('admin_id');
        $admin_name = session('admin_name');
       
//        未登录系统用户判断,如果未登录跳转到登陆页
//        (如果访问的是登陆页，或者验证码允许访问)
        $login = 'Manager-login,Manager-logout,Manager-yzm,Manager-check_yzm,Manager-yzdl';
  
        if(empty($admin_name) && strpos($login,$newac)===false ){
            $js = <<<eof
                    <script type="text/javascript">
                    window.top.location.href = "/index.php/Admin/Manager/login";
                    </script>
eof;
                echo $js;
                exit;
//            $this->redirect('Manager/login');
        }
        
        $manager_info = D('Manager')->find($admin_id);
        $roleid = $manager_info['mg_role_id'];
        
//        根据$roleid获取角色信息
        $roleinfo =D('Role')->find($roleid);
        $auth_ac = $roleinfo['role_auth_ac'];
//        当前方位的权限与允许访问权限对比,strpos()判断一个小字符串在大字符串中出现的位置
//        默认所有用户允许访问的权限
        $allow_ac = "Manager-login,Manager-yzdl,Manager-logout,Index-index,Index-left,Index-right,Index-head,Manager-yzm,Manager-check_yzm";
//            越权访问判断
//        1.当访问的权限没有出现在‘权限允许’里边 
//        2.当前访问的权限同时不存在没人允许访问权限
//        3.访问者同时也不是超级管理
        if(strpos($auth_ac,$newac)===false && strpos($allow_ac,$newac)===false && $admin_name!=='2296244403@qq.com'){
            exit('无权限访问');
        }
    }
}

